// pages/list/list.js
const fetch = require("../../utils/fetch.js")
Page({

  /**
   * 页面的初始数据
   */
  // input 搜索框
  showInput: function () {
    this.setData({
      inputShowed: true
    });
  },
  hideInput: function () {
    this.setData({
      inputVal: "",
      inputShowed: false
    });
  },
  clearInput: function () {
    this.setData({
      inputVal: ""
    });
  },

  data: {
    inputShowed: false,
    inputVal: "",
    category:{},
    shops:[],
    pageIndex:0,  // 页数
    pageSize:20,  // 条数
    hasMore:true,  // 默认为true，
  },
  
  // 对下拉加载下一批数据进行封装
    loadMore(){
      // 加载之前先进行判断是否还有更多,有就进行，没有则return
      if(!this.data.hasMore) return
      let { pageIndex, pageSize,searchText} = this.data   // 结构赋值，es6新特性，替换下行1和10
      if (searchText) params.q = searchText  //搜索实现
      const parms = { _page: ++pageIndex, _limit: pageSize }  // 考虑太长了，抽取出来方便
      return fetch(`categories/${this.data.category.id}/shops`, parms) // return出去，可以继续.then
       .then(res => {
          // console.log(res)
          // 总条数数据   字符串记得转换数字parseInt()方法
          const totalCount = parseInt(res.header['X-Total-Count'])
          // 页码*每页条数是否小于总条数  逻辑判断
          const hasMore = this.data.pageIndex * this.data.pageSize < totalCount
          // 用concat方法进行数据拼接
          const shops = this.data.shops.concat(res.data)
          this.setData({ shops, pageIndex,hasMore})
          // this.setData({ shops: res.data,pageIndex })
          // 因为数据有最大值，可以通过network查看一共多少条，然后根据每次刷新条数，来计算并控制当没有数据可供下拉的情况
        })
    },

  // this.data.category.id == options.cat
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options)
    // wx.request({
    //   url: 'https://locally.uieee.com/categories?id='+options.cat,
    //   success:res=>{
    //     // console.log(res)
    //     this.setData({category:res.data});
    //     wx.setNavigationBarTitle({
    //       title:res.data.name
    //     })
    //   }
    // })
     fetch(`categories/${options.cat}`).then(res=>{
        // console.log(res.data)

       this.setData({category:res.data})  // js渲染到页面
       // 动态获取设置title标题
       wx.setNavigationBarTitle({
         title:res.data.name
       }) 
          // 渲染页面
      //  return fetch(`categories/${options.cat}/shops`, { _page: 1, _limit: 10 })
      this.loadMore()
     })
    // .then(res=>{
    //   console.log(res)
    //     this.setData({shops:res.data})
    // })
  },




  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 考虑严密性，再次加强动态获取的title
    if(this.data.category.name){
      wx.setNavigationBarTitle({
        title:res.data.name
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    // 顶部下拉刷新数据，等于从新渲染第一次数据
    // 注意：下拉动作默认3s延迟效果，当我们下拉刷新数据完成，应取消下拉效果，通过wx.stopPullDownRefresh() 
    // 将参数配置重新初始化
    this.setData({ shops: [], pageIndex: 0, hasMore: true })
    // Promise工作流就是完成上次才能继续.then进行下面工作,所以在上次需要return 出去
    this.loadMore().then(() => wx.stopPullDownRefresh() )
      
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 封装好的直接调用
    this.loadMore()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})